package modele;

import java.util.ArrayList;
import java.util.Observable;

public class ModeleChoixChamps extends Observable{
	private String titre="", editeur="",genres="", auteurs="",dessinateurs="";
	private String annee="",note="";
	private ModeleP modele;
	ArrayList<String> possiblites=new ArrayList<String>();
	/**
	 * permet de creer une instance de modeleChoixChamps
	 * @param modele le modeleP de la bdteque
	 */
	public ModeleChoixChamps(ModeleP modele){
		this.modele=modele;
	}
	/**
	 * permet de changer la valeur du titre et d'effectuer la recherche ne fonction
	 * @param titre
	 */
	public void setTitre(String titre) {
		this.titre=titre;
		maj();
		possiblites=modele.getCollec().getTitres(titre);
		setChanged();notifyObservers();
	}
	/**
	 * permet de changer la valuer de l'editeur et d'effectuer la recherche en fonction
	 * @param editeur
	 */
	public void setEditeur(String editeur) {
		this.editeur=editeur;
		maj();
		possiblites=modele.getCollec().getEditeurs(editeur);
	}
	/**
	 * permet de changer la valuer de "genres" et d'effectuer la recherche en fonction
	 * @param genres
	 */
	public void setGenres(String genres) {
		this.genres=genres;
		maj();
		possiblites=modele.getCollec().getGenres(genres);
	}
	/**
	 * permet de changer la valuer de "note" et d'effectuer la recherche en fonction
	 * @param note
	 */
	public void setNote(String note) {
		this.note=note;
		maj();
		possiblites=modele.getCollec().getNote(note);
	}
	/**
	 * permet de changer la valeur de "annee" et d'effectuer la recherche en fonction
	 * @param annee
	 */
	public void setAnnee(String annee) {
		this.annee=annee;
		maj();
		possiblites=modele.getCollec().getDate(annee);
	}
	/**
	 * permet de changer la valuer de "auteurs" et d'effectuer la recherche en fonction
	 * @param auteurs
	 */
	public void setAuteurs(String auteurs) {
		this.auteurs=auteurs;
		maj();
		possiblites=modele.getCollec().getAuteurs(auteurs);
	}
	/**
	 * permet de changer la valuer de "dessianteurs" et d'effectuer la recherche en fonction
	 * @param dessinateurs
	 */
	public void setDessinateurs(String dessinateurs) {
		this.dessinateurs=dessinateurs;
		maj();
		possiblites=modele.getCollec().getDessinateurs(dessinateurs);

	}
	/**
	 * permet d'effectuer la recharche et de modifier la sousbd
	 */
	private void maj(){
		CollectionBD souscollec=modele.getCollec();
		souscollec=souscollec.getSousCollecByTitre(titre);
		souscollec=souscollec.getSousCollecByEditeur(editeur);
		souscollec=souscollec.getSousCollecByNote(note);
		souscollec=souscollec.getSousCollecByAnnee(annee);
		for(String s:genres.split("[,;]",-1)){
			souscollec=souscollec.getSousCollecByGenre(s.trim());
		}
		for(String s:auteurs.split("[,;]",-1)){
			souscollec=souscollec.getSousCollecByAuteur(s.trim());
		}
		for(String s:dessinateurs.split("[,;]",-1)){
			souscollec=souscollec.getSousCollecByDessinateur(s.trim());
		}
		modele.setSousBD(souscollec);
	}
	/**
	 * 
	 * @return la liste des valeurs possible pour le dernier champ modifié
	 */
	public ArrayList<String> getPossiblites(){
		return possiblites;
	}
}